﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using DECOR.BL.BE;
using DECOR.BL.BC;
using CM.BL.BE;
using DECOR.DL.DALCF;
using DECOR.DL.DALC;
using System.Collections.Specialized;
//using DECOR.DL.DALC.NC03;

namespace DECOR.WebApp
{
    public partial class Login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                DaoFactory.pConnId = "";
                //DALC.logOut(Session.SessionID);
                Session.RemoveAll();
                Session.Clear();
                Session.Abandon();
                Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
                CredencialesController.Usuario = null;                
            }
        }

        protected void LoginCrystalis_LoggingIn(object sender, LoginCancelEventArgs e)
        {
            try
            {
                RfcConfigParametersBE objUsuarioWeb = new RfcConfigParametersBE();
                objUsuarioWeb.UsuarioWEB = LoginCrystalis.UserName.Trim().ToUpper(); //WEBDIST
                objUsuarioWeb.PasswordWEB = LoginCrystalis.Password.Trim();
                //*****************************************************************
                // SOLO PARA PUERBAS LUEGO  ELIMINAR
                //objUsuarioWeb.guid = Session.SessionID;
                //DALC._Guid = Session.SessionID;
                DECOR.DL.DALCF.DaoFactory.pConnId = Session.SessionID;
                //quitar, por ahora se esta revisando.
                //NameValueCollection param = new NameValueCollection();
                //param.Add("Id", Session.SessionID);
                //param.Add("UserId", LoginCrystalis.UserName.Trim().ToUpper());
                //param.Add("PwdId", LoginCrystalis.Password.Trim());
                //CredencialesController.cargarInfo(param);
                //*****************************************************************
                
                string retval = UsuarioBC.login(ref objUsuarioWeb);

                if (string.IsNullOrEmpty(retval))
                {
                    if (string.IsNullOrEmpty(objUsuarioWeb.Uname) || string.IsNullOrEmpty(objUsuarioWeb.Passwd))
                    {
                        LoginCrystalis.InstructionText = "No cuenta con un Usuario SAP asignado.";
                    }
                    else
                    {
                        bool verifPswd = ParametroBC.contraseniaValida(objUsuarioWeb.PasswordWEB);
                        Session.Timeout = Convert.ToInt32(ParametroBC.Instance.getParamValue("SessionTimeout"));
                        Session["UsuarioWeb"] = objUsuarioWeb;

                        //*****************************************************************
                        // SOLO PARA PUERBAS LUEGO CAMBIAR POR objUsuarioWeb.PerNr
                        //WEBDIST 00000017 objUsuarioWeb.PerNr
                        PersonaBE objPersona = PersonaBC.Instance.leer(objUsuarioWeb.PerNr);
                        // SOLO PARA PUERBAS LUEGO  ELIMINAR
                        verifPswd = true;
                        //objUsuarioWeb.FechaPswd = DateTime.Now;
                        //objUsuarioWeb.CanalDist = "30";
                        //objUsuarioWeb.ClienteEvent = "0000101317";
                        //objUsuarioWeb.GrpVend = "300";
                        //objUsuarioWeb.OfVentas = "1010";
                        //objUsuarioWeb.OrgVentas = "1000";
                        //*****************************************************************
                        if (objPersona == null)
                        {
                            objPersona = new PersonaBE();
                        }
                        Session["PersonaWeb"] = objPersona;

                        Session["UsuarioSAP"] = new object();

                        CredencialesController.Usuario = objUsuarioWeb;

                        //--- validar si pswd expiró
                        int comparacion = objUsuarioWeb.FechaPswd.AddDays(Convert.ToDouble(ParametroBC.Instance.getParamValue("ExpDiaPass"))).CompareTo(DateTime.Today);
                        if (comparacion <= 0)
                        {
                            Session["Contrasenia"] = ParametroBC.Instance.getParamValue("PasswdAviso").Replace("\\n", "<br />");
                            Session["Bandera"] = true;
                            Response.Redirect(ParametroBC.Instance.getParamValue("PasswdPage"));
                        }
                        //---------------------------

                        Session["Bandera"] = false;
                        
                        if (verifPswd)
                        {
                            Response.Redirect(ParametroBC.Instance.getParamValue("MainPage"));
                        }
                        else
                        {
                            Session["Contrasenia"] = ParametroBC.Instance.getParamValue("PasswdChangeText").Replace("\\n", "<br />");
                            Response.Redirect(ParametroBC.Instance.getParamValue("PasswdPage"));
                        }
                    }
                }
                else
                {
                    LoginCrystalis.InstructionText = retval;
                }
            }
            catch (Exception ex)
            {
                LoginCrystalis.InstructionText = ex.Message.Replace("\\n", "<br />");
            }
            e.Cancel = true;
        }
    }
}
